import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { getConnection, Repository } from 'typeorm';
import { createNodeDataDto } from './dto/node.dto';
import { Node } from './node.entity';

@Injectable()
export class NodeService {
  constructor(
    @InjectRepository(Node)
    private nodeZongjuRepository: Repository<Node>,
  ) {}

  // 获取总局节点信息
  async getNodeList() {
    const result = await getConnection()
      .createQueryBuilder()
      .select() // 这里添加参数会将每一个返回的字段的名称前面都添加一个job_
      .from(Node, 'node')
      .execute(); // 将获取的数据类型转换为json类型
    return result;
  }

  // 根据节点名称查找链路
  async getNodeInfoByName(node_name: string) {
    const result = await getConnection()
      .createQueryBuilder()
      .select()
      .from(Node, 'node')
      .where('node.node_name = :node_name', { node_name })
      .execute();
    return result;
  }

  // 根据节点id查找节点
  async getNodeInfoById(id: string) {
    const result = await getConnection()
      .createQueryBuilder()
      .select()
      .from(Node, 'node')
      .where('node.id = :id', { id })
      .execute();
    return result;
  }

  // 新建总局节点信息
  async createNode(values: Array<createNodeDataDto>) {
    const result = await getConnection()
      .createQueryBuilder()
      .insert()
      .into(Node)
      .values(values)
      .execute();
    return result;
  }

  // 根据id删除链路信息
  async delNode(id: string) {
    const result = await getConnection()
      .createQueryBuilder()
      .delete()
      .from(Node)
      .where('id = :id', { id })
      .execute();
    return result;
  }

  // 修改链路信息
  async updataNode(id: string, data) {
    const result = await getConnection()
      .createQueryBuilder()
      .update(Node)
      .set(data)
      .where('id = :id', { id })
      .execute();
    return result;
  }
}
